package top.korori.utils;

import java.util.Random;

public class GenUserName {

    // 常用的形容词
    // 形容词数组 (100个)
    private static final String[] ADJECTIVES = {
            "快乐", "忧伤", "孤独", "温柔", "狂野", "安静", "疯狂", "可爱",
            "傲慢", "谦虚", "深情", "冷酷", "温暖", "清新", "淡雅", "沉默",
            "高贵", "优雅", "慵懒", "活泼", "开朗", "文艺", "霸气", "萌萌",
            "甜美", "帅气", "美丽", "潇洒", "阳光", "酷炫", "柔情", "邪魅",
            "妖娆", "清纯", "可人", "英俊", "飘逸", "灵动", "俊秀", "时尚",
            "典雅", "灵巧", "机智", "聪慧", "睿智", "豪放", "雅致", "浪漫",
            "迷人", "干净", "纯真", "俏皮", "调皮", "娇俏", "婉约", "飘渺",
            "神秘", "悠然", "从容", "淡定", "随性", "洒脱", "冷艳", "热情",
            "执着", "坚强", "勇敢", "无畏", "善良", "纯洁", "灵秀", "俊逸",
            "飘然", "超然", "旷达", "豁达", "儒雅", "谦和", "灵气", "秀气",
            "英气", "傲气", "灵秀", "飘逸", "洒脱", "淡泊", "清雅", "高洁",
            "清丽", "娴静", "婉转", "俊美", "刚毅", "坚韧", "豪迈", "爽朗"
    };

    // 名词数组 (100个)
    private static final String[] NOUNS = {
            "猫咪", "风", "雨", "星辰", "月光", "花朵", "树叶", "海浪",
            "少年", "诗人", "梦想家", "旅人", "剑客", "勇士", "精灵", "天使",
            "王子", "公主", "骑士", "魔法师", "战士", "游侠", "刺客", "法师",
            "蝴蝶", "彩虹", "阳光", "月亮", "星星", "云朵", "雪花", "露珠",
            "玫瑰", "樱花", "荷花", "菊花", "兰花", "梅花", "桃花", "莲花",
            "狐狸", "兔子", "小鹿", "熊猫", "松鼠", "麋鹿", "独角兽", "凤凰",
            "江南", "烟雨", "山水", "竹林", "古道", "青石", "小桥", "流水",
            "琴师", "画家", "舞者", "歌手", "侠客", "书生", "才子", "佳人",
            "将军", "侯爷", "王爷", "郡主", "皇子", "公子", "小姐", "才女",
            "仙子", "道士", "和尚", "居士", "侠女", "剑仙", "散仙", "神仙",
            "浪子", "游子", "诗客", "墨客", "酒客", "茶客", "剑客", "琴客",
            "书客", "画客", "棋客", "酒仙", "茶仙", "剑仙", "琴仙", "书仙"
    };

    // 前缀数组 (50个)
    private static final String[] PREFIXES = {
            "小小", "大大", "超级", "最强", "绝世", "唯一", "无敌", "至尊",
            "倾城", "绝代", "天下", "一代", "非常", "极品", "完美", "绝顶",
            "傲世", "绝色", "倾国", "独步", "唯我", "无双", "举世", "风流",
            "天涯", "江湖", "武林", "修仙", "洪荒", "九天", "十方", "万古",
            "千年", "百世", "一世", "永恒", "不朽", "传说", "神话", "仙界",
            "魔界", "人间", "天际", "九霄", "云端", "星际", "银河", "宇宙",
            "混沌", "太古"
    };

    // 后缀数组 (50个)
    private static final String[] SUFFIXES = {
            "丶", "君", "酱", "大人", "小姐", "先生", "大大", "sama",
            "桑", "哥", "姐", "弟", "妹", "叔", "姑娘", "大王",
            "小王", "殿下", "陛下", "爷", "大师", "小主", "老师", "前辈",
            "大侠", "少侠", "公子", "仙子", "道长", "大仙", "大神", "小神",
            "教主", "门主", "帝君", "仙君", "魔君", "少主", "总裁", "老大",
            "队长", "首领", "族长", "城主", "王后", "公主", "少爷", "小姐",
            "大侠", "圣者"
    };

    private static final Random random = new Random();

    public static String generateNickname() {
        int pattern = random.nextInt(8); // 增加组合方式

        StringBuilder nickname = new StringBuilder();

        switch (pattern) {
            case 0: // 前缀 + 形容词 + 名词
                nickname.append(PREFIXES[random.nextInt(PREFIXES.length)])
                        .append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)]);
                break;
            case 1: // 形容词 + 名词 + 后缀
                nickname.append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)])
                        .append(SUFFIXES[random.nextInt(SUFFIXES.length)]);
                break;
            case 2: // 前缀 + 名词 + 后缀
                nickname.append(PREFIXES[random.nextInt(PREFIXES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)])
                        .append(SUFFIXES[random.nextInt(SUFFIXES.length)]);
                break;
            case 3: // 形容词 + 形容词 + 名词
                nickname.append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)]);
                break;
            case 4: // 前缀 + 形容词 + 名词 + 后缀
                nickname.append(PREFIXES[random.nextInt(PREFIXES.length)])
                        .append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)])
                        .append(SUFFIXES[random.nextInt(SUFFIXES.length)]);
                break;
            case 5: // 形容词 + 名词
                nickname.append(ADJECTIVES[random.nextInt(ADJECTIVES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)]);
                break;
            case 6: // 前缀 + 名词
                nickname.append(PREFIXES[random.nextInt(PREFIXES.length)])
                        .append(NOUNS[random.nextInt(NOUNS.length)]);
                break;
            case 7: // 名词 + 后缀
                nickname.append(NOUNS[random.nextInt(NOUNS.length)])
                        .append(SUFFIXES[random.nextInt(SUFFIXES.length)]);
                break;
        }

        return nickname.toString();
    }

    public static void main(String[] args) {
        // 生成10个示例网名
        for (int i = 0; i < 10; i++) {
            System.out.println(generateNickname());
        }
    }

    public String getUserName(){
        return generateNickname();
    }

}
